1. Field of the Invention
The present invention relates to an image processor adapted to perform volume rendering from voxel data by a depth queuing method.
2. Description of the Related Art
In the medical field, it is known that cross-sectional data (two-dimensional image) of a body structure is obtained by the use of a CT (computed tomography) apparatus or an MRI (magnetic resonance imaging) apparatus. The data thus obtained is transformed into (x, y) plane data. A plurality of frames of data can be acquired by parallelly displacing the position of the cross section. With the normal direction of the cross section taken along the z-axis, such plural frames of the data can be regarded as three-dimensional data (x, y, z). Since the resolution in the z-axis direction is lower than that in the cross-section data (x, y), it is generally customary to execute an interpolation to attain mutual adjustment of the resolutions. Such data having values in the entire three-dimensional space are termed boxel data.
A technique of forming a stereographic two-dimensional image from voxel data (three-dimensional data) is termed volume rendering. The depth queuing method is one art included in such volume rendering. The fundamental concept of the depth queuing method resides in achieving stereoscopic reality by lightening a portion near the viewpoint while darkening a portion far therefrom.
Now a consideration is given to a technique of applying the depth queuing method to medical voxel data acquired by the use of a CT or MRI apparatus as mentioned. In medical data, there exists a constant correlation between a luminance value and a biological structure. For example, the contour of a face can be obtained stereoscopically through volume rendering of the data representative of skin by the depth queuing method.
Hereinafter an exemplary algorithm of the depth queuing method will be described.
First an explanation will be given on the volume rendering of voxel data in the z-axis direction. In this case, data D (x, y, z) are acquired in the z-axis direction sequentially by changing the value z with respect to one set of (x, y), and a check is executed as to whether the value of each of the data D (x, y, z) is between predetermined thresholds TH1 and TH2. If the result of such a check signifies that the data D (x, y, z) is between the thresholds TH1 and TH2, a value (zmax-z) is stored at an address (x, y) in an output buffer where the result of the volume rendering is to be written. The value zmax denotes the maximum in the z-axis direction. The volume rendering from the z-axis direction can be performed by repeatedly executing the above operation with respect to the set (x, y).
Volume rendering of voxel data from an arbitrary direction is performed in the following manner. Suppose now that the positional relationship shown in FIG. 5 is existent between the voxel data (original data) and the output buffer where the result of the volume rendering is written. In this case, the normal direction of the output buffer becomes coincident with a sight-line direction, i.e., a depth queuing direction (indicated by an arrow Q).
There are two methods selectable for volume rendering of the voxel data from an arbitrary direction, i.e., by rotating the voxel data while fixing the sight line, or by rotating the sight line while fixing the voxel data. More specifically, selection of either of such two methods is dependent on which of the two coordinate systems (x, y, z) or (X, Y, Z) shown in FIG. 5 is adopted for execution of calculations. Hereinafter an explanation will be given on the former method which rotates the voxel data while fixing the sight line. It is assumed here that the center of rotation is coincident with the center of the voxel data.
In the depth queuing, the line of the voxel data D (x, y, z) is used in the normal direction with respect to a point in the output buffer. Supposing that the voxel data has a size of d.times.d.times.d, the address of the line of the voxel data D (x, y, z) in the normal direction with respect to the point (X, Y) in the output buffer is calculated according to Eq. (1) shown below, wherein the variable Z changes within a range of -L/2&lt;Z&lt;L/2; L=d.times..sqroot.3; and .alpha., .beta. and .gamma. denote rotation angles on the x-axis, y-axis and z-axis, respectively. ##STR1##
In this case, the address (x, calculated by changing the variable Z according to Eq. (1) with respect to one point (X, Y) in the output buffer, and then the data D (x, y, z) are acquired sequentially from the voxel data by the use of such address. A check is executed as to whether the value of each of the data D (x, y, z) is between predetermined thresholds TH1 and TH2. If the result of such a check signifies that the data D (x, y, z) is between the two thresholds TH1 and TH2, a value (Zmax-Z) is stored at an address (X, Y) in the output buffer, wherein Zmax denotes the maximum value in the Z-axis direction. The above operation is performed repeatedly with regard to each of the entire points (X, Y) in the output buffer, whereby the volume rendering is executed in the arbitrary direction.
It has been customary heretofore that, for execution of volume rendering from voxel data by the depth queuing method, a general-purpose computer such as a work station of FIG. 6 is employed as an image processor. In this diagram, there are included a CPU 1 serving as a controller, a dynamic RAM 2 serving as a three-dimensional memory for storing boxel data therein, a cache memory (static RAM) 3 where fast access to data is achievable, a video RAM 4 serving as an output buffer, and a monitor 5 for displaying a two-dimensional image formed by the volume rendering.
When such volume rendering is performed by the depth queuing method from voxel data, a considerably long processing time is required in the prior art due to the processes (1) to (3) mentioned below consequently raising difficulties in attaining a fast operation:
(1) It is necessary to calculate a great number of three-dimensional addresses (x, y, z) in the sight-line direction. PA0 (2) A great amount of three-dimensional data needs to be accessed randomly. PA0 (3) A great amount of three-dimensional data needs to be processed by the depth queuing method.
Although the processes (1) and (2) can be executed relatively simply, a long calculation time is required in each case on account of a great number of data. As to the process (2) where three-dimensional data are accessed randomly, there frequently occurs the necessity of accessing the three-dimensional data not yet transferred into the cache memory 3. It follows in this case that such access is executed to the RAM 2, whereby a long time is also required for accessing the great amount of data.